home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / RLEUtilities.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  1.6 KB  |  107 lines

  1. package javax.swing.text;
  2.  
  3. class RLEUtilities {
  4.    static final boolean debug = false;
  5.  
  6.    static byte[] readRLE(byte[] var0) {
  7.       byte[] var1 = new byte[var0.length * 4];
  8.       int var2 = 0;
  9.       int var3 = 0;
  10.  
  11.       while(var3 < var0.length) {
  12.          byte var4 = var0[var3++];
  13.          int var5 = var4 & 127;
  14.          if (var2 + var5 > var1.length) {
  15.             byte[] var6 = new byte[Math.max(var2 + var5, var1.length * 2)];
  16.             System.arraycopy(var1, 0, var6, 0, var2);
  17.             var1 = var6;
  18.          }
  19.  
  20.          if ((var4 & 128) != 0) {
  21.             byte var9 = var0[var3++];
  22.  
  23.             while(true) {
  24.                --var5;
  25.                if (var5 < 0) {
  26.                   break;
  27.                }
  28.  
  29.                var1[var2++] = var9;
  30.             }
  31.          } else {
  32.             System.arraycopy(var0, var3, var1, var2, var5);
  33.             var3 += var5;
  34.             var2 += var5;
  35.          }
  36.       }
  37.  
  38.       byte[] var8 = new byte[var2];
  39.       System.arraycopy(var1, 0, var8, 0, var2);
  40.       return var8;
  41.    }
  42.  
  43.    static byte[] writeRLE(byte[] var0) {
  44.       byte[] var1 = new byte[var0.length + var0.length / 126 + 1];
  45.       int var2 = 0;
  46.       int var3 = 0;
  47.  
  48.       while(var3 < var0.length) {
  49.          byte var4 = var0[var3];
  50.          boolean var5 = false;
  51.          int var6 = var3 + 1;
  52.  
  53.          for(int var7 = Math.min(var0.length, var3 + 126); var6 < var7; ++var6) {
  54.             if (var0[var6] == var4) {
  55.                ++var6;
  56.                if (var6 >= var7) {
  57.                   break;
  58.                }
  59.  
  60.                if (var0[var6] == var4) {
  61.                   var6 -= 2;
  62.                   break;
  63.                }
  64.             }
  65.  
  66.             var4 = var0[var6];
  67.          }
  68.  
  69.          if (var6 > var3) {
  70.             int var8 = var6 - var3;
  71.             var1[var2++] = (byte)var8;
  72.  
  73.             try {
  74.                System.arraycopy(var0, var3, var1, var2, var8);
  75.             } catch (ArrayIndexOutOfBoundsException var10) {
  76.                System.out.println("src len: " + var0.length + " p: " + var3 + " res len: " + var1.length + " w: " + var2 + " n: " + var8);
  77.                throw var10;
  78.             }
  79.  
  80.             var2 += var8;
  81.          }
  82.  
  83.          if (var6 >= var0.length) {
  84.             break;
  85.          }
  86.  
  87.          var3 = var6++;
  88.          int var15 = Math.min(var0.length, var3 + 126);
  89.  
  90.          byte var16;
  91.          for(var16 = var0[var3]; var6 < var15 && var0[var6] == var16; ++var6) {
  92.          }
  93.  
  94.          if (var6 > var3 + 2) {
  95.             int var9 = var6 - var3;
  96.             var1[var2++] = (byte)(128 | var9);
  97.             var1[var2++] = (byte)var16;
  98.             var3 = var6;
  99.          }
  100.       }
  101.  
  102.       byte[] var13 = new byte[var2];
  103.       System.arraycopy(var1, 0, var13, 0, var2);
  104.       return var13;
  105.    }
  106. }
  107.